package home.ex.todolist.shared;

import java.io.Serializable;

/**
 * 
 * @author peerawatpoombua
 */
public class Todo implements Serializable {
    
    private static final long serialVersionUID = -1976853982051334073L;
    
    private int id;
    private String todoName;
    private boolean isDone;
    
    public Todo() {
    }
    
    public Todo(final String todoName) {
	this.todoName = todoName;
    }
    
    public Todo(final int id, final String todoName, final boolean isDone) {
	this.id = id;
	this.todoName = todoName;
	this.isDone = isDone;
    }
    
    public Todo(final String todoName, final boolean isDone) {
	this.todoName = todoName;
	this.isDone = isDone;
    }
    
    public int getId() {
	return this.id;
    }
    
    public void setId(final int id) {
	this.id = id;
    }
    
    public String getTodoName() {
	return this.todoName;
    }
    
    public void setTodoName(final String todoName) {
	this.todoName = todoName;
    }
    
    public boolean getIsDone() {
	return this.isDone;
    }
    
    public void setIsDone(final boolean isDone) {
	this.isDone = isDone;
    }
    
    @Override
    public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + this.id;
	result = prime * result + (this.isDone ? 1231 : 1237);
	result = prime * result + ((this.todoName == null) ? 0 : this.todoName.hashCode());
	return result;
    }
    
    @Override
    public boolean equals(final Object obj) {
	if (this == obj) {
	    return true;
	}
	if (obj == null) {
	    return false;
	}
	if (this.getClass() != obj.getClass()) {
	    return false;
	}
	final Todo other = (Todo) obj;
	if (this.id != other.id) {
	    return false;
	}
	if (this.isDone != other.isDone) {
	    return false;
	}
	if (this.todoName == null) {
	    if (other.todoName != null) {
		return false;
	    }
	} else if (!this.todoName.equals(other.todoName)) {
	    return false;
	}
	return true;
    }
    
    @Override
    public String toString() {
	return "Todo{" + "id=" + this.id + ", todoName=" + this.todoName + '}';
    }
}
